﻿(function ($) {
    window.homePageTitle = "主页";
    window.homePageUrl = "/Home/WorkSpace";
    window.blankTabUrl = "/Blank/BlankTab";
    window.tabDefaultOptions = { title: "新建选项卡", href: window.blankTabUrl, iconCls: "icon-tab", closable: true, selected: true };
    window.mainTabsId = "#center-tabs";
    //添加主页选项卡
    window.addHomeTab = function () {
        window.addTab({ title: window.homePageTitle, href: window.homePageUrl, iconCls: "icon-homepage", closable: false, selected: true, iniframe: false });
    };
    window.tabDefaultOptions = { title: "新建选项卡", href: window.blankTabUrl, iconCls: "icon-tab", closable: true, selected: true };
    //添加指定属性的选项卡，该方法的参数 param 为一个 JSON 格式的对象，该对象包含如下属性：
    //  title:
    //  href:
    //  inIframe:
    //  iconCls:
    //  closable:
    //  selected:
    window.addTab = function (param) {
        var opts = $.extend({}, window.tabDefaultOptions, param);
       
        
       
        if (!(opts.href==undefined||opts.href==null||opts.href=="")) { opts.href = opts.href; }
        var exists = window.existsTab($.extend({}, opts, { which: opts.title }));
        switch (exists) {
            case 0:
                window.appendTab(opts);
                break;
            case 1:
                window.selectTab(opts.title);
                break;
            case 2:
                var index = 1;
                while ($(window.mainTabsId).tabs("exists", opts.title + index)) {
                    var param = { which: opts.title + index, href: opts.href, iconCls: opts.iconCls };
                    if (window.existsTab(param) == 1) { window.selectTab(opts.title + index); return; }
                    index++;
                }
                break;
            case 3:
                window.selectTabAndRefresh({ title: opts.title, href: opts.href });
                break;
            default:
                window.appendTab(opts);
                break;
        }
    };
    //添加选项卡的根方法，该方法的参数 param 为一个 JSON 格式的对象，该对象包含如下属性：
    //  title:
    //  href:
    //  iconCls:
    //  closable:
    //  selected:
    window.appendTab = function (param) {
        var opts = $.extend({}, window.tabDefaultOptions, param);
        var url = opts.href;
        if (opts.href) {
            opts = $.extend(opts, { content: '<iframe scrolling="auto" src="' + opts.href + '" frameborder="0" style="border:0;width:100%;height:100%;" ></iframe>' });
            delete opts.href;
        }
        
        opts = $.extend(opts, {
            tools: [{
                iconCls: 'icon-mini-refresh',
                handler: function () {
                    //$(window.mainTabsId).tabs('refresh',opts.title);
                    //$(window.mainTabsId).tabs('open').tabs('refresh');
                    var current_tab = $(window.mainTabsId).tabs('getSelected');
                    $(window.mainTabsId).tabs('update', {
                        tab: current_tab,
                        options: {
                            content: '<iframe scrolling="auto" frameborder="0"  src="' + url + '" style="width:100%;height:100%;"></iframe>',
                            //或者 href : '';
                        }
                    });

                }
            }]
        });
        $(window.mainTabsId).tabs("add", opts);
    };

    //选中指定标题名或索引号的选项卡。
    window.selectTab = function (which) {
        $(window.mainTabsId).tabs("select", which);
    };
    //选中指定标题名的选项卡，同时以新的url进行刷新
    window.selectTabAndRefresh = function (param) {
        window.selectTab(param.title);
        var tab = $(window.mainTabsId).tabs("getTab", param.title);
        var index = $(window.mainTabsId).tabs("getTabIndex", tab);
        var options = tab.panel("options");
        var opts = $.extend({}, options, param);
        $(window.mainTabsId).tabs("update", { tab: tab, options: opts });
        //$(window.mainTabsId).tabs("options").onRefresh.call($(window.mainTabsId), opts.title, index);
    };
    //判断指定属性的选项卡是否已经存在。
    //传入的参数 param 为一个 JSON 格式的对象，该对象可包含如下三个属性：
    //  which: 表示选项卡标题名或者索引号(从 0 开始)；
    //  href: 表示选项卡的 href 值；
    //  iconCls: 表示选项卡的 图标。
    //可能的返回结果，0:表示不存在,1:表示完全符合条件的选项卡存在,2:表示仅仅是该标题名符合的选项卡存在,3:表示标题名符合，url的路径符合，但url的参数内容不符合
    window.existsTab = function (param) {
        var defaults = { which: 0, href: null, iconCls: null };
        var opts = $.extend(defaults, param);
        var returnValue = 0;
        if ($(window.mainTabsId).tabs("exists", opts.which)) {
            returnValue = 2;
            var opts = $(window.mainTabsId).tabs("getTab", opts.which).panel("options");
            if (opts.title == param.title) { returnValue = 1; }
            //else if (opts.href.indexOf("?") > -1 && param.href.indexOf("?") > -1) {
            //    //if (opts.href.split('?')[0] == param.href.split('?')[0]) {
            //    //    returnValue = 3;
            //    //}
            //}
        }
        return returnValue;
    };
    //跳转到主页选项卡
    window.jumpHomePageTab = function () {

        $(window.mainTabsId).tabs("select", window.homePageTitle);

    };
}
)(jQuery);